import router from '@/route';
import store from '@/store';
import { Message } from 'element-ui';
import { getToken } from '@/utils/auth'; // get token from cookie

const whiteList = ['/login'];
router.beforeEach(async (to, from, next) => {
  // next函数 进行管道中的一个钩子，如果执行完了，则导航的状态就是 confirmed （确认的）；否则为false，终止导航。
  const hasToken = getToken();
  console.log('即将进入的路由对象' + to.path, '当前导航即将离开的路由' + from.path);
  if (hasToken) {
    if (to.path === '/login') {
      next({ path: '/' });// 有token时,跳转
    } else {
      const hasGetUserInfo = store.getters.userInfo;
      if (hasGetUserInfo) {
        next();
      } else {
        try {
          // get user info
          await store.dispatch('user/getInfo');
          next();
        } catch (error) {
          // remove token and go to login page to re-login
          await store.dispatch('user/resetToken');
          Message.error(error || 'Has Error');
          next(`/login?redirect=${to.path}`);
        }
      }
    }
  } else {
    //  没有token时
    // console.log(to.path)
    if (whiteList.indexOf(to.path) !== -1) { // 是登录页就直接跳转到登录页
      next();
    } else {
      next(`/login?redirect=${to.path}`);// 其他页面无token时 直接重定向为登录页
    }
  }
});

// router.beforeRouteEnter(async(to, from, next) => {
//   const hasToken = getToken()
// console.log('即将进入的路由对象'+to.path, '当前导航即将离开的路由'+from.path)
//   if (hasToken) {
//     if (to.path === '/login') {
//       next({ path: '/' })//有token时,跳转
//     } else {
//       const hasGetUserInfo = store.getters.userInfo
//       if (hasGetUserInfo) {
//         next()
//       } else {
//         try {
//           // get user info
//           await store.dispatch('user/getInfo')
//           next()
//         } catch (error) {
//           // remove token and go to login page to re-login
//           await store.dispatch('user/resetToken')
//           Message.error(error || 'Has Error')
//           next(`/login?redirect=${to.path}`)
//         }
//       }
//     }
//   } else {
//       //  没有token时
//       // console.log(to.path)
//     if (whiteList.indexOf(to.path) !== -1) {//是登录页就直接跳转到登录页
//       next()
//     } else {
//       next(`/login?redirect=${to.path}`)// 其他页面吴token时 直接重定向为登录页
//     }
//   }
// })
